package rmi;

import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.List;

import observer.ObservableRemotoREST;
import beans.AperturaMesaBean;
import beans.CartaBean;
import beans.ComandaBean;
import beans.ItemCartaBean;
import beans.MesaBean;
import beans.MozoBean;
import beans.PedidoBean;
import beans.PersonalBean;
import beans.SucursalBean;
public interface InterfazRemotaRest extends ObservableRemotoREST{
	
	//public void abrirMesa(AperturaMesaBean mesa) throws RemoteException;
	
//	public List<AperturaMesaBean> obtenerAperturasPorMozo(Integer legajo) throws RemoteException; //CP
	
//	public String[] validarCantidadComensales(List<MesaBean> mesas, Integer cantComensales) throws RemoteException; //CP
	
//	public List<MozoBean> obtenerMozosPorSector(Integer idSector) throws RemoteException; //CP
	
//	public SectorBean obtenerSectorPorMesa(MesaBean mesa) throws RemoteException; //CP
	
//	public Integer calcularComision(MozoBean mozo)throws RemoteException; //CP
	
	public boolean abrirMesa(Integer cantComensales, List<MesaBean> mesas, MozoBean mozo, Integer idSucursal)throws RemoteException;
	
//	public void modificarMesa(MesaBean mesa)throws RemoteException; //CP
	
//	public void reservarMesa(Integer cantComensales)throws RemoteException; //CP
	
//	public List<MesaBean> obtenerMesasLibres()throws RemoteException; //CP
	
	public List<MozoBean> obtenerMozos()throws RemoteException;
	
//	public List<MozoBean> obtenerMozosPorSucursal(SucursalBean sucursal)throws RemoteException; //CPobtenerSector
	
	public ComandaBean emitirComanda(List<ItemCartaBean> items)throws RemoteException;
	
//	public SectorBean obtenerSector(Integer idSector)throws RemoteException; //CP
	
//	public List<ItemCartaBean> obtenerItemsDePedido (MozoBean mozo, AperturaMesaBean apertMesa)throws RemoteException; //CP
		
	public void liberarMesa (AperturaMesaBean apertMesa)throws RemoteException;
	
	public void cierreMesa(AperturaMesaBean apertMesa)throws RemoteException;
	
	public void generarPedido (AperturaMesaBean apertMesa, List<ItemCartaBean> itemsCarta) throws RemoteException;
	
	public void registrarPedido(AperturaMesaBean apertMesa, List<PedidoBean> pedidos) throws RemoteException;
	
	//public void iniciarAperturaMesa(List<MesaBean> mesas,MozoBean mozo,Integer comensales,	List<PedidoBean> pedidos) throws RemoteException;
	
	public String hola() throws RemoteException;
	
	public MozoBean obtenerMozo(Integer idMozo)throws RemoteException;
	
	public SucursalBean obtenerSucursal(Integer idSucursal) throws RemoteException;

	public List<ComandaBean> obtenerComandasPorArea(String area) throws RemoteException;

	public void registrarPago(AperturaMesaBean apertMesa, SucursalBean sucursal,String formaPago) throws RemoteException;

	public ComandaBean obtenerComandasPorId(Integer id) throws RemoteException;

	public void liberarComandas(String[] idComandas) throws RemoteException;
	
	public ArrayList<MesaBean> obtenerMesasLibres() throws RemoteException;
	
	//Carlos
	
	public List<String> obtenerNombreTipoProductoConStock(int nroDeposito) throws RemoteException;
	
	public String obtenerIdUsuario(int legajo) throws RemoteException;

	//public List<String> obtenerNombreSucursales() throws RemoteException;

	List<Integer> obtenerIdDeposito() throws RemoteException;
	
	List<PersonalBean> obtenerPersonal() throws RemoteException;

	public CartaBean obtenerCartaLista(int idCarta)throws RemoteException;
	
	public List<MesaBean> mesasSinPedido(int idMozo) throws RemoteException;
	
	public List<AperturaMesaBean> aperturasSinPedido(int idMozo) throws RemoteException;

	public List<AperturaMesaBean> aperturasConPedido(Integer mozoId) throws RemoteException;

	public List<ItemCartaBean> itemCartaDePedido(int idApmSelecc) throws RemoteException;

	public void actualizarAperturaMesa(AperturaMesaBean apm) throws RemoteException;
	
	public Integer facturarMesa(AperturaMesaBean apertMesa, SucursalBean sucursal) throws RemoteException;
	
	public void registrarPago(FacturaBean factura,SucursalBean sucursal,String formaPago) throws RemoteException;
	
	public FacturaBean obtenerFactura(Integer id)throws RemoteException;
	
	public FacturaBean obtenerFacturaPorApMesa(Integer id)throws RemoteException;
	
	public CajaBean obtenerCaja(SucursalBean sucursal)throws RemoteException;
}
